home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / AEObjects.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  12.1 KB  |  316 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        AEObjects.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT AEObjects;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __AEOBJECTS__}
  27. {$SETC __AEOBJECTS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC AEObjectsIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __MEMORY__}
  35. {$I Memory.p}
  36. {$ENDC}
  37. {    Types.p                                                        }
  38. {        ConditionalMacros.p                                        }
  39. {    MixedMode.p                                                    }
  40.  
  41. {$IFC UNDEFINED __OSUTILS__}
  42. {$I OSUtils.p}
  43. {$ENDC}
  44.  
  45. {$IFC UNDEFINED __QUICKDRAW__}
  46. {$I Quickdraw.p}
  47. {$ENDC}
  48. {    QuickdrawText.p                                                }
  49.  
  50. {$IFC UNDEFINED __EVENTS__}
  51. {$I Events.p}
  52. {$ENDC}
  53.  
  54. {$IFC UNDEFINED __EPPC__}
  55. {$I EPPC.p}
  56. {$ENDC}
  57. {    Errors.p                                                    }
  58. {    PPCToolbox.p                                                }
  59. {        AppleTalk.p                                                }
  60. {    Processes.p                                                    }
  61. {        Files.p                                                    }
  62.  
  63. {$IFC UNDEFINED __APPLEEVENTS__}
  64. {$I AppleEvents.p}
  65. {$ENDC}
  66. {    Notification.p                                                }
  67.  
  68. {$PUSH}
  69. {$ALIGN MAC68K}
  70. {$LibExport+}
  71.  
  72. CONST
  73.     kAEAND                        = 'AND ';                        {  0x414e4420  }
  74.     kAEOR                        = 'OR  ';                        {  0x4f522020  }
  75.     kAENOT                        = 'NOT ';                        {  0x4e4f5420  }
  76. {***    ABSOLUTE ORDINAL CONSTANTS    ***}
  77.     kAEFirst                    = 'firs';                        {  0x66697273  }
  78.     kAELast                        = 'last';                        {  0x6c617374  }
  79.     kAEMiddle                    = 'midd';                        {  0x6d696464  }
  80.     kAEAny                        = 'any ';                        {  0x616e7920  }
  81.     kAEAll                        = 'all ';                        {  0x616c6c20  }
  82. {***    RELATIVE ORDINAL CONSTANTS    ***}
  83.     kAENext                        = 'next';                        {  0x6e657874  }
  84.     kAEPrevious                    = 'prev';                        {  0x70726576  }
  85. {***    KEYWORD CONSTANT     ***}
  86.     keyAECompOperator            = 'relo';                        {  0x72656c6f  }
  87.     keyAELogicalTerms            = 'term';                        {  0x7465726d  }
  88.     keyAELogicalOperator        = 'logc';                        {  0x6c6f6763  }
  89.     keyAEObject1                = 'obj1';                        {  0x6f626a31  }
  90.     keyAEObject2                = 'obj2';                        {  0x6f626a32  }
  91. {    ... for Keywords for getting fields out of object specifier records. }
  92.     keyAEDesiredClass            = 'want';                        {  0x77616e74  }
  93.     keyAEContainer                = 'from';                        {  0x66726f6d  }
  94.     keyAEKeyForm                = 'form';                        {  0x666f726d  }
  95.     keyAEKeyData                = 'seld';
  96.  
  97. {    ... for Keywords for getting fields out of Range specifier records. }
  98.     keyAERangeStart                = 'star';                        {  0x73746172  }
  99.     keyAERangeStop                = 'stop';                        {  0x73746f70  }
  100. {    ... special handler selectors for OSL Callbacks. }
  101.     keyDisposeTokenProc            = 'xtok';                        {  0x78746f6b  }
  102.     keyAECompareProc            = 'cmpr';                        {  0x636d7072  }
  103.     keyAECountProc                = 'cont';                        {  0x636f6e74  }
  104.     keyAEMarkTokenProc            = 'mkid';                        {  0x6d6b6964  }
  105.     keyAEMarkProc                = 'mark';                        {  0x6d61726b  }
  106.     keyAEAdjustMarksProc        = 'adjm';                        {  0x61646a6d  }
  107.     keyAEGetErrDescProc            = 'indc';
  108.  
  109. {***    VALUE and TYPE CONSTANTS    ***}
  110. {    ... possible values for the keyAEKeyForm field of an object specifier. }
  111.     formAbsolutePosition        = 'indx';                        {  0x696e6478  }
  112.     formRelativePosition        = 'rele';                        {  0x72656c65  }
  113.     formTest                    = 'test';                        {  0x74657374  }
  114.     formRange                    = 'rang';                        {  0x72616e67  }
  115.     formPropertyID                = 'prop';                        {  0x70726f70  }
  116.     formName                    = 'name';                        {  0x6e616d65  }
  117. {    ... relevant types (some of these are often pared with forms above). }
  118.     typeObjectSpecifier            = 'obj ';                        {  0x6f626a20  }
  119.     typeObjectBeingExamined        = 'exmn';                        {  0x65786d6e  }
  120.     typeCurrentContainer        = 'ccnt';                        {  0x63636e74  }
  121.     typeToken                    = 'toke';                        {  0x746f6b65  }
  122.     typeRelativeDescriptor        = 'rel ';                        {  0x72656c20  }
  123.     typeAbsoluteOrdinal            = 'abso';                        {  0x6162736f  }
  124.     typeIndexDescriptor            = 'inde';                        {  0x696e6465  }
  125.     typeRangeDescriptor            = 'rang';                        {  0x72616e67  }
  126.     typeLogicalDescriptor        = 'logi';                        {  0x6c6f6769  }
  127.     typeCompDescriptor            = 'cmpd';
  128.  
  129. { Possible values for flags parameter to AEResolve.  They're additive }
  130.     kAEIDoMinimum                = $0000;
  131.     kAEIDoWhose                    = $0001;
  132.     kAEIDoMarking                = $0004;
  133.  
  134. {*** SPECIAL CONSTANTS FOR CUSTOM WHOSE-CLAUSE RESOLUTION }
  135.     typeWhoseDescriptor            = 'whos';                        {  0x77686f73  }
  136.     formWhose                    = 'whos';                        {  0x77686f73  }
  137.     typeWhoseRange                = 'wrng';                        {  0x77726e67  }
  138.     keyAEWhoseRangeStart        = 'wstr';                        {  0x77737472  }
  139.     keyAEWhoseRangeStop            = 'wstp';                        {  0x77737470  }
  140.     keyAEIndex                    = 'kidx';                        {  0x6b696478  }
  141.     keyAETest                    = 'ktst';
  142.  
  143. {*
  144.     used for rewriting tokens in place of 'ccnt' descriptors
  145.     This record is only of interest to those who, when they...
  146.     ...get ranges as key data in their accessor procs, choose
  147.     ...to resolve them manually rather than call AEResolve again.
  148. *}
  149.  
  150. TYPE
  151.     ccntTokenRecord = RECORD
  152.         tokenClass:                DescType;
  153.         token:                    AEDesc;
  154.     END;
  155.     ccntTokenRecPtr = ^ccntTokenRecord;
  156.     ccntTokenRecHandle = ^ccntTokenRecPtr;
  157.  
  158.     DescPtr = ^AEDesc;
  159.     DescHandle = ^DescPtr;
  160.  
  161. { typedefs providing type checking for procedure pointers }
  162.     OSLAccessorProcPtr = ProcPtr;  { FUNCTION OSLAccessor(desiredClass: DescType; (CONST)VAR container: AEDesc; containerClass: DescType; form: DescType; (CONST)VAR selectionData: AEDesc; VAR value: AEDesc; accessorRefcon: LONGINT): OSErr; }
  163.     OSLCompareProcPtr = ProcPtr;  { FUNCTION OSLCompare(oper: DescType; (CONST)VAR obj1: AEDesc; (CONST)VAR obj2: AEDesc; VAR result: BOOLEAN): OSErr; }
  164.     OSLCountProcPtr = ProcPtr;  { FUNCTION OSLCount(desiredType: DescType; containerClass: DescType; (CONST)VAR container: AEDesc; VAR result: LONGINT): OSErr; }
  165.     OSLDisposeTokenProcPtr = ProcPtr;  { FUNCTION OSLDisposeToken(VAR unneededToken: AEDesc): OSErr; }
  166.     OSLGetMarkTokenProcPtr = ProcPtr;  { FUNCTION OSLGetMarkToken((CONST)VAR dContainerToken: AEDesc; containerClass: DescType; VAR result: AEDesc): OSErr; }
  167.     OSLGetErrDescProcPtr = ProcPtr;  { FUNCTION OSLGetErrDesc(VAR appDescPtr: DescPtr): OSErr; }
  168.     OSLMarkProcPtr = ProcPtr;  { FUNCTION OSLMark((CONST)VAR dToken: AEDesc; (CONST)VAR markToken: AEDesc; index: LONGINT): OSErr; }
  169.     OSLAdjustMarksProcPtr = ProcPtr;  { FUNCTION OSLAdjustMarks(newStart: LONGINT; newStop: LONGINT; (CONST)VAR markToken: AEDesc): OSErr; }
  170.     OSLAccessorUPP = UniversalProcPtr;
  171.     OSLCompareUPP = UniversalProcPtr;
  172.     OSLCountUPP = UniversalProcPtr;
  173.     OSLDisposeTokenUPP = UniversalProcPtr;
  174.     OSLGetMarkTokenUPP = UniversalProcPtr;
  175.     OSLGetErrDescUPP = UniversalProcPtr;
  176.     OSLMarkUPP = UniversalProcPtr;
  177.     OSLAdjustMarksUPP = UniversalProcPtr;
  178.  
  179. CONST
  180.     uppOSLAccessorProcInfo = $000FFFE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  181.     uppOSLCompareProcInfo = $00003FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  182.     uppOSLCountProcInfo = $00003FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  183.     uppOSLDisposeTokenProcInfo = $000000E0; { FUNCTION (4 byte param): 2 byte result; }
  184.     uppOSLGetMarkTokenProcInfo = $00000FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  185.     uppOSLGetErrDescProcInfo = $000000E0; { FUNCTION (4 byte param): 2 byte result; }
  186.     uppOSLMarkProcInfo = $00000FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  187.     uppOSLAdjustMarksProcInfo = $00000FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  188.  
  189. FUNCTION NewOSLAccessorProc(userRoutine: OSLAccessorProcPtr): OSLAccessorUPP;
  190.     {$IFC NOT GENERATINGCFM }
  191.     INLINE $2E9F;
  192.     {$ENDC}
  193.  
  194. FUNCTION NewOSLCompareProc(userRoutine: OSLCompareProcPtr): OSLCompareUPP;
  195.     {$IFC NOT GENERATINGCFM }
  196.     INLINE $2E9F;
  197.     {$ENDC}
  198.  
  199. FUNCTION NewOSLCountProc(userRoutine: OSLCountProcPtr): OSLCountUPP;
  200.     {$IFC NOT GENERATINGCFM }
  201.     INLINE $2E9F;
  202.     {$ENDC}
  203.  
  204. FUNCTION NewOSLDisposeTokenProc(userRoutine: OSLDisposeTokenProcPtr): OSLDisposeTokenUPP;
  205.     {$IFC NOT GENERATINGCFM }
  206.     INLINE $2E9F;
  207.     {$ENDC}
  208.  
  209. FUNCTION NewOSLGetMarkTokenProc(userRoutine: OSLGetMarkTokenProcPtr): OSLGetMarkTokenUPP;
  210.     {$IFC NOT GENERATINGCFM }
  211.     INLINE $2E9F;
  212.     {$ENDC}
  213.  
  214. FUNCTION NewOSLGetErrDescProc(userRoutine: OSLGetErrDescProcPtr): OSLGetErrDescUPP;
  215.     {$IFC NOT GENERATINGCFM }
  216.     INLINE $2E9F;
  217.     {$ENDC}
  218.  
  219. FUNCTION NewOSLMarkProc(userRoutine: OSLMarkProcPtr): OSLMarkUPP;
  220.     {$IFC NOT GENERATINGCFM }
  221.     INLINE $2E9F;
  222.     {$ENDC}
  223.  
  224. FUNCTION NewOSLAdjustMarksProc(userRoutine: OSLAdjustMarksProcPtr): OSLAdjustMarksUPP;
  225.     {$IFC NOT GENERATINGCFM }
  226.     INLINE $2E9F;
  227.     {$ENDC}
  228.  
  229. FUNCTION CallOSLAccessorProc(desiredClass: DescType; {CONST}VAR container: AEDesc; containerClass: DescType; form: DescType; {CONST}VAR selectionData: AEDesc; VAR value: AEDesc; accessorRefcon: LONGINT; userRoutine: OSLAccessorUPP): OSErr;
  230.     {$IFC NOT GENERATINGCFM}
  231.     INLINE $205F, $4E90;
  232.     {$ENDC}
  233.  
  234. FUNCTION CallOSLCompareProc(oper: DescType; {CONST}VAR obj1: AEDesc; {CONST}VAR obj2: AEDesc; VAR result: BOOLEAN; userRoutine: OSLCompareUPP): OSErr;
  235.     {$IFC NOT GENERATINGCFM}
  236.     INLINE $205F, $4E90;
  237.     {$ENDC}
  238.  
  239. FUNCTION CallOSLCountProc(desiredType: DescType; containerClass: DescType; {CONST}VAR container: AEDesc; VAR result: LONGINT; userRoutine: OSLCountUPP): OSErr;
  240.     {$IFC NOT GENERATINGCFM}
  241.     INLINE $205F, $4E90;
  242.     {$ENDC}
  243.  
  244. FUNCTION CallOSLDisposeTokenProc(VAR unneededToken: AEDesc; userRoutine: OSLDisposeTokenUPP): OSErr;
  245.     {$IFC NOT GENERATINGCFM}
  246.     INLINE $205F, $4E90;
  247.     {$ENDC}
  248.  
  249. FUNCTION CallOSLGetMarkTokenProc({CONST}VAR dContainerToken: AEDesc; containerClass: DescType; VAR result: AEDesc; userRoutine: OSLGetMarkTokenUPP): OSErr;
  250.     {$IFC NOT GENERATINGCFM}
  251.     INLINE $205F, $4E90;
  252.     {$ENDC}
  253.  
  254. FUNCTION CallOSLGetErrDescProc(VAR appDescPtr: DescPtr; userRoutine: OSLGetErrDescUPP): OSErr;
  255.     {$IFC NOT GENERATINGCFM}
  256.     INLINE $205F, $4E90;
  257.     {$ENDC}
  258.  
  259. FUNCTION CallOSLMarkProc({CONST}VAR dToken: AEDesc; {CONST}VAR markToken: AEDesc; index: LONGINT; userRoutine: OSLMarkUPP): OSErr;
  260.     {$IFC NOT GENERATINGCFM}
  261.     INLINE $205F, $4E90;
  262.     {$ENDC}
  263.  
  264. FUNCTION CallOSLAdjustMarksProc(newStart: LONGINT; newStop: LONGINT; {CONST}VAR markToken: AEDesc; userRoutine: OSLAdjustMarksUPP): OSErr;
  265.     {$IFC NOT GENERATINGCFM}
  266.     INLINE $205F, $4E90;
  267.     {$ENDC}
  268.  
  269. FUNCTION AEObjectInit: OSErr;
  270. { Not done by inline, but by direct linking into code.  It sets up the pack
  271.   such that further calls can be via inline }
  272. FUNCTION AESetObjectCallbacks(myCompareProc: OSLCompareUPP; myCountProc: OSLCountUPP; myDisposeTokenProc: OSLDisposeTokenUPP; myGetMarkTokenProc: OSLGetMarkTokenUPP; myMarkProc: OSLMarkUPP; myAdjustMarksProc: OSLAdjustMarksUPP; myGetErrDescProcPtr: OSLGetErrDescUPP): OSErr;
  273.     {$IFC NOT GENERATINGCFM}
  274.     INLINE $303C, $0E35, $A816;
  275.     {$ENDC}
  276. FUNCTION AEResolve({CONST}VAR objectSpecifier: AEDesc; callbackFlags: INTEGER; VAR theToken: AEDesc): OSErr;
  277.     {$IFC NOT GENERATINGCFM}
  278.     INLINE $303C, $0536, $A816;
  279.     {$ENDC}
  280. FUNCTION AEInstallObjectAccessor(desiredClass: DescType; containerType: DescType; theAccessor: OSLAccessorUPP; accessorRefcon: LONGINT; isSysHandler: BOOLEAN): OSErr;
  281.     {$IFC NOT GENERATINGCFM}
  282.     INLINE $303C, $0937, $A816;
  283.     {$ENDC}
  284. FUNCTION AERemoveObjectAccessor(desiredClass: DescType; containerType: DescType; theAccessor: OSLAccessorUPP; isSysHandler: BOOLEAN): OSErr;
  285.     {$IFC NOT GENERATINGCFM}
  286.     INLINE $303C, $0738, $A816;
  287.     {$ENDC}
  288. FUNCTION AEGetObjectAccessor(desiredClass: DescType; containerType: DescType; VAR accessor: OSLAccessorUPP; VAR accessorRefcon: LONGINT; isSysHandler: BOOLEAN): OSErr;
  289.     {$IFC NOT GENERATINGCFM}
  290.     INLINE $303C, $0939, $A816;
  291.     {$ENDC}
  292. FUNCTION AEDisposeToken(VAR theToken: AEDesc): OSErr;
  293.     {$IFC NOT GENERATINGCFM}
  294.     INLINE $303C, $023A, $A816;
  295.     {$ENDC}
  296. FUNCTION AECallObjectAccessor(desiredClass: DescType; {CONST}VAR containerToken: AEDesc; containerClass: DescType; keyForm: DescType; {CONST}VAR keyData: AEDesc; VAR token: AEDesc): OSErr;
  297.     {$IFC NOT GENERATINGCFM}
  298.     INLINE $303C, $0C3B, $A816;
  299.     {$ENDC}
  300. {——————————————————————————————— END PUBLIC PROCEDURES ——————————————————————————-—}
  301. {——————————————————————————————————————————————————————————————-------------------—}
  302. {  NOTE: To check for the presence of the Object Support Library on PowerPC, use    }
  303. {    the Gestalt selector, gestaltOSLInSystem, which is defined in Gestalt.h/p/a.    }
  304. {——————————————————————————————————————————————————————————————-------------------—}
  305.  
  306. {$ALIGN RESET}
  307. {$POP}
  308.  
  309. {$SETC UsingIncludes := AEObjectsIncludes}
  310.  
  311. {$ENDC} {__AEOBJECTS__}
  312.  
  313. {$IFC NOT UsingIncludes}
  314.  END.
  315. {$ENDC}
  316.